package org.oslims.client.service;

import java.util.List;

import org.oslims.domain.BaseUser;
import org.oslims.domain.Customer;
import org.oslims.domain.LabManager;
import org.oslims.domain.LabResponsible;
import org.oslims.domain.Operator;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * The async counterpart of <code>GreetingService</code>.
 */
public interface UserServiceAsync {

	void saveOrUpdateCustomer(Customer customer, AsyncCallback<Void> callback);

	void saveOrUpdateLabManager(LabManager labManager, AsyncCallback<Void> callback);

	void saveOrUpdateLabResponsible(LabResponsible labResponsible, AsyncCallback<Void> callback);

	void saveOrUpdateOperator(Operator operator, AsyncCallback<Void> callback);

	void findByEMailAndPassword(String eMail, String password, AsyncCallback<BaseUser> callback);

	void getAllCustomer(int start, int length, String sortBy, boolean desc, AsyncCallback<List<Customer>> callback);

	void getAllLabManager(int start, int length, String sortBy, boolean desc, AsyncCallback<List<LabManager>> callback);

	void getAllLabResponsible(int start, int length, String sortBy, boolean desc, AsyncCallback<List<LabResponsible>> callback);

	void getAllOperators(int start, int length, String sortBy, boolean desc, AsyncCallback<List<Operator>> callback);

	void getCustomerCount(AsyncCallback<Integer> callback);

	void getLabManagerCount(AsyncCallback<Integer> callback);

	void getLabResponsibleCount(AsyncCallback<Integer> callback);

	void getOperatorCount(AsyncCallback<Integer> callback);

	void getAllCustomer(AsyncCallback<List<Customer>> callback);

	void getAllLabManager(AsyncCallback<List<LabManager>> callback);

	void getAllLabResponsible(AsyncCallback<List<LabResponsible>> callback);

	void getAllOperators(AsyncCallback<List<Operator>> callback);

}
